package com.sgcc.nfc.lock.core.nfc

/**
 * NFC配置类，包含密码列表和其他NFC相关设置
 */
object NfcConfig {
    
    /**
     * 默认密码列表
     * 注意：在生产环境中，这些密码应该从安全的配置文件或服务器获取
     * 优先级：小程序端默认密码优先尝试
     */
    val DEFAULT_PASSWORDS = listOf(
        "20250624",  // 小程序端默认密码
        "123456",    // 备用默认密码
        "000000",    // 常用默认密码
        "111111",    // 常用默认密码
        "888888",    // 常用默认密码
        "666666"     // 常用默认密码
    )
    
    /**
     * 最大充电尝试次数
     */
    const val MAX_CHARGE_ATTEMPTS = 40
    
    /**
     * 充电间隔时间（毫秒）
     * 注意：需要与小程序端保持一致（100ms）
     */
    const val CHARGE_INTERVAL_MS = 100L
    
    /**
     * 成功状态持续时间（毫秒）
     */
    const val SUCCESS_STATE_DURATION_MS = 5000L
    
    /**
     * NFC操作超时时间（毫秒）
     */
    const val NFC_OPERATION_TIMEOUT_MS = 10000L
    
    /**
     * 获取当前使用的密码列表
     * 可以根据需要从不同来源获取密码
     */
    fun getPasswordList(): List<String> {
        // TODO: 在实际应用中，可以从以下来源获取密码：
        // 1. SharedPreferences中的用户自定义密码
        // 2. 服务器配置
        // 3. 加密的本地配置文件
        return DEFAULT_PASSWORDS
    }
    
    /**
     * 添加自定义密码到列表
     */
    fun addCustomPassword(password: String): List<String> {
        val currentPasswords = getPasswordList().toMutableList()
        if (!currentPasswords.contains(password)) {
            currentPasswords.add(0, password) // 添加到列表开头，优先尝试
        }
        return currentPasswords
    }
    
    /**
     * 验证密码格式
     */
    fun isValidPassword(password: String): Boolean {
        return password.isNotBlank() && 
               password.length >= 4 && 
               password.length <= 20 &&
               password.all { it.isDigit() || it.isLetter() }
    }
    
    /**
     * 获取推荐的密码格式说明
     */
    fun getPasswordFormatDescription(): String {
        return "密码应为4-20位数字或字母组合"
    }
}